package syscontrollers

import (
	"myadmin/sys/syscontrollers/syscommon"
	"myadmin/sys/sysmodels"
	"strconv"
)

type SysUsers struct {
	syscommon.BaseController
}

func (c *SysUsers) URLMapping() {
	c.Mapping("Post", c.Post)
	//c.Mapping("Get", c.Get)
	c.Mapping("Gets", c.Gets)
	c.Mapping("Put", c.Put)
	c.Mapping("Delete", c.Delete)
	c.Mapping("ResePassword", c.RestPassword)
}


// @Title 创建员工
// @Description 创建员工
// @Param username form  string true 用户账号
// @Param name form  string true 用户名
// @Param sex form  string fasle 性别male:男_female:女
// @Param phone form  string false 电话
// @Param idcard form  string false 身份证号
// @Param role form string false 角色
// @Success 200 {json} 创建成功
// @Failure 500 {json} 创建失败
// @router /user [post]
func (this *SysUsers) Post() {
	var err error
	muser := sysmodels.NewSysUser()
	err = this.ParseForm(muser)
	if err != nil {
		this.JsonRep500x("输入数据有误！", err.Error())
		return
	}
	muser.Password = sysmodels.GetPassword(muser.Username + "123")
	err = muser.Add()
	if err != nil {
		this.JsonRep500x(err.Error(), err)
		return
	}
	this.JsonRep200("注册成功")
}

//@Title 查询员工详情
//@Description 查询员工详情
//@Param id path int true 员工id
//@Success 200 {json} 返回员工信息
//@Failure 500 {json} 用户不存在/查询失败
//@router /users/:id [get]
//func (this *SysUsers) Get() {
//	_id := this.Ctx.Input.Param(":id")
//	var user = models.NewSysUser()
//
//	//单条查询
//	id, err := strconv.Atoi(_id)
//	if err != nil {
//		this.JsonRep500("无效id")
//		return
//	}
//	user.Id = id
//	err = user.GetUserById()
//	if err != nil {
//		if err == orm.ErrNoRows {
//			this.JsonRep500("该用户不存在!")
//		} else {
//			this.JsonRep500("查询失败")
//		}
//	}
//	this.JsonRep200x("查询成功", user)
//
//}

// @Title 批量查询员工详情
// @Description 批量查询员工详情
// @Param page query int false 第几页，默认第一页
// @Param limit query int false 一页多少条，默认15条
// @Param username query string false 员工账号，模糊匹配
// @Param name query string false 员工姓名，模糊匹配
// @Param idcard query string false 员工身份证号，模糊匹配
// @Param phone query string false 手机号，模糊匹配
// @Success 200 {json} 返回员工信息
// @Failure 500 {json} 用户不存在/查询失败
// @router /user [get]
func (this *SysUsers) Gets() {

	var user = sysmodels.NewSysUser()
	//多条查询
	page := this.GetString("page")
	p := this.S2i(page, 1)
	limit := this.GetString("limit")
	l := this.S2i(limit, 20)
	username := this.GetString("username")
	user.Username = username
	nickname := this.GetString("name")
	user.Name = nickname
	idcard := this.GetString("idcard")
	user.Idcard = idcard
	phone := this.GetString("phone")
	user.Phone = phone
	sex:=this.GetString("sex")
	user.Sex = sex
	users, cnt := user.Query(l, p)
	this.JsonReqStdS(200, int(cnt), l, p, users)

}

//@title 删除用户
//@Param id path int true 员工id
//@Success 203 空
//@Failure 500 {json} 删除失败
//@router /user/:id [delete]
func (this *SysUsers) Delete() {
	_id := this.Ctx.Input.Param(":id")
	var user = sysmodels.NewSysUser()
	id, err := strconv.Atoi(_id)
	if err != nil {
		this.JsonRep500("无效id")
		return
	}
	user.Id = id
	_, err = user.DeleteById()
	if err != nil {
		this.JsonRep500("删除失败")
		return
	}
	this.Ok204()
}

//@Title 修改用户信息
//@Description 修改用户信息
//@Param id path string true 用户id
//@Param nick_name json string false 用户名
//@Param sex json string false male||female性别
//@Param phone json string false 手机
//@Param idcard json string false 身份证信息
//@Param Birthday json string false 出生日'2006-01-02'
//@Param status json boolean false 是否有效
//@Param RoleName json boolean false 是否有效
//@Success 200 {json} 成功
//@Failure 500 {json} 失败
//@router /user/:id [put]
func (this *SysUsers) Put() {
	_id := this.Ctx.Input.Param(":id")

	var user = sysmodels.NewSysUser()
	id, err := strconv.Atoi(_id)
	if err != nil {
		this.JsonRep500("无效id")
		return
	}
	m := this.Input()
	keys := make([]string, 0, len(m))
	for k := range m {
		keys = append(keys, k)
	}
	err = this.ParseForm(user)
	//m, err := this.ReqJson2map()
	if err != nil {
		this.JsonRep500x("更新失败,上传数据格式不正确", err)
		return
	}
	user.Id = id
	err = user.Update(keys)
	if err != nil {
		this.JsonRep500(err.Error())
		return
	}
	this.JsonRep200("更新成功")
}

//@title 重置用户密码
//@Description 重置用户密码 账号+123
//@Param id path int true 用户id
//@Param password json string true 新密码
//@Success 200 {json} 成功
//@Failure  500 {json} 未提供新密码/重置密码失败
//@router /user/resetpsw/:id [post]
func (this *SysUsers) RestPassword() {
	_id := this.Ctx.Input.Param(":id")
	user:=sysmodels.NewSysUser()
	id, err := strconv.Atoi(_id)
	user.Id = id
	err =user.GetById()

	if err != nil {
		this.JsonRep500("无效id")
		return
	}
	user.Password = user.Username+"123"
	err = user.Update([]string{"password"})
	if err != nil {
		this.JsonRep500(err.Error())
		return
	}
	this.JsonRep200("密码修改成功")

}
